namespace taurus.client{

    /**
     * TArray interface
     */
    export interface ITArray{
        /**
         * get wrapper of index.
         * @param index 
         */
        get(index:number):TDataWrapper;

        /**
         * get bool of index.
         */
        getBool(index:number) : boolean;

        /**
         * get byte of index
         * @param index 
         */
        getByte(index:number):number;

        /**
         * get byte array of index.
         * @param index 
         */
        getByteArray(index:number):Uint8Array;

        /**
         * get double of index.
         * @param index 
         */
        getDouble(index:number):number;

        /**
         * get float of index.
         * @param index 
         */
        getFloat(index:number):number;

        /**
         * get int of index
         * @param index 
         */
        getInt(index:number):number;

        /**
         * get long of index.
         * @param index 
         */
        getLong(index:number):number;

        /**
         * get TArray of index.
         * @param index 
         */
        getTArray(index:number):ITArray;

        /**
         * get TObject of index.
         * @param index 
         */
        getTObject(index:number):ITObject;

        /**
         * get short of index.
         * @param index 
         */
        getShort(index:number):number;

        /**
         * get string of index.
         * @param index 
         */
        getString(index:number):string;

        /**
         * Check null object of index.
         * @param index 
         */
        isNull(index:number):boolean;

        /**
         * add TDataWrapper to index.
         * @param val 
         */
        add(val:TDataWrapper);

        /**
         * add bool to index.
         * @param val 
         */
        addBool(val:boolean);

        /**
         * add byte to index.
         * @param val 
         */
        addByte(val:number);

        /**
         * add byte array to index.
         * @param val 
         */
        addByteArray(val:Uint8Array);

        /**
         * add double to index.
         * @param val 
         */
        addDouble(val:number);

        /**
         * add float to index.
         * @param val 
         */
        addFloat(val:number);

        /**
         * add int to index.
         * @param val 
         */
        addInt(val:number);

        /**
         * add long to index.
         * @param val 
         */
        addLong(val:number);

        /**
         * add null object to index.
         */
        addNull();

        /**
         * add TArray to index.
         * @param val 
         */
        addTArray(val:ITArray);

        /**
         * add TObject to index.
         * @param val 
         */
        addTObject(val:ITObject);

        /**
         * add short to index.
         * @param val 
         */
        addShort(val:number);

        /**
         * add string to index.
         * @param val 
         */
        addString(val:string);

        /**
         * get size.
         */
        size():number;
        
        /**
         * The to byte array.
         */
        toBinary():ByteArray;

        /**
         * The to byte array.
         */
        toJson():string;
    }
}